export { default as findNodeById } from './findNodeById';
export { default as splitStyle } from './splitStyle';
export { default as splitSpace } from './splitSpace';
export { default as astUtil } from './astUtil';

/**
 * 格式化高度和宽度
 * @param style 
 * @returns 
 */
export function formatStyle(style: { width: number | string, height: number | string }): { width: number, height: number } {
  return {
    width: formatPx(style.width),
    height: formatPx(style.height)
  };
}
/**
 * 将 **px 转换成数字， 比如: 100 或 100px 转换成 100
 * @param space 宽度或高度
 * @returns 数字
 */
export function formatPx(space: string | number) {
  const pattern = /([\d]+)[px]?/;
  pattern.test(space.toString());
  return Number(RegExp.$1);
}
/**
 * 传入padding，返回 [上，右，下，左]数组
 * @param padding 
 * @returns 
 */
export function formatPadding (padding: string | number | undefined): number[] {
  if (!padding) return [0, 0, 0, 0]; 
  if (typeof padding === 'number') return [padding, padding, padding, padding];
  const arr = padding.split(' ');
  // 如果长度为1
  if (arr.length === 1) {
    let pd = formatPx(arr[0]);
    return [pd, pd, pd, pd];
  }
  // 如果长度为2
  if (arr.length === 2) {
    return [
      formatPx(arr[0]),
      formatPx(arr[1]),
      formatPx(arr[0]),
      formatPx(arr[1]),
    ];
  }
  if (arr.length === 3) {
    return [
      formatPx(arr[0]),
      formatPx(arr[1]),
      formatPx(arr[2]),
      formatPx(arr[1]),
    ];
  }
  if (arr.length === 4) return arr.map(item => formatPx(item));
  return [0, 0, 0, 0];
}

/**
 * Description 生成随机字符串
 * @param {number} len
 * @returns {string}
 */
export function randomString(len: number = 32){
	//默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1
	var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678oOLl9gqVvUuI1';
	var tempLen = chars.length, tempStr='';
	for(var i=0; i<len; ++i){
		tempStr += chars.charAt(Math.floor(Math.random() * tempLen ));
	}
	return tempStr;
}
